Do not call gnutls_global_set_mutex()
authorRyan Tandy <ryan@nardis.ca>
Sat, 14 May 2022 18:35:44 +0000 (19:35 +0100)
committerRyan Tandy <ryan@nardis.ca>
Sat, 14 May 2022 18:35:44 +0000 (19:35 +0100)
commit44ac87cf0ce07d98669da6c3c27988d1cb3edee4
tree0eb579b5c14822e7b0893c42305c5d52521d6f8e
parent8b141e8228e67b186400bab798449b6e0a39ccc4
Do not call gnutls_global_set_mutex()

Bug-Debian: https://bugs.debian.org/803197
Forwarded: no

Since GnuTLS moved to implicit initialization on library load, calling
this function deinitializes GnuTLS and then re-initializes it.

When GnuTLS uses /dev/urandom as an entropy source (getrandom() not
available, or older versions of GnuTLS), and the application closed all
file descriptors at startup, this could result in GnuTLS opening
/dev/urandom over one of the application's file descriptors when
re-initialized.

Additionally, the custom mutex functions are never reset, so if libldap
is unloaded (for example via dlclose()) after calling this, its code
may be unmapped and the application could crash when GnuTLS calls the
mutex functions.

The default behaviour of GnuTLS, using pthreads, should be suitable on
all Debian systems, and is probably the same as what libldap uses
anyway.

Gbp-Pq: Name no-gnutls_global_set_mutex
libraries/libldap/tls_g.c